export default {
	props: {
		// 页面的展示类型，可选值 preview：纯展示题目，edit：编辑状态（编辑状态下无论哪种获取数据的方式，都必须存在完整的id信息）
		pageType: {
			type: String,
			default: "preview"
		},
		// 数据的获取方式，localStorageAll：本地数据（所有的数据获取都只依赖本地的localStorage缓存）,localStorageBase（只读取本地localStorage缓存中的试题id，试题类型，试题类型名称，其他的数据根据缓存id从服务端异步获取）
		dataGetType: {
			type: String,
			default: "localStorageAll"
		},
		// 本地localStorage的存储key名称
		localStorageKey: {
			type: String,
			required: true
		}
	},
	data() {
		return {
			isLoading: false,
            isShowEditDialog: false,
            editQuestionObject: {}, // 当前编辑的试题对象，结果是questionShowList里试题的一个浅复制对象
            editQuestionType: 'normal', // 当前编辑的试题所属类型
			activeType: "", // 当前类型导航选中的题目类型
			/**
			 * 从localStorage中获取的全部试题信息，可能完整，可能只有id
			 * 结构示例 [{类型1,[试题类型1的题目列表]},{类型2,[试题类型2的题目列表]}]
			 */
			questionAllList: [],
			/**
			 * 将questionAllList扁平化的列表
			 * 结构示例 [试题1,试题2,试题3]
			 */
			flatQuestionAllList: [],
			/**
			 * 试题导航列表
			 * 结构示例 [{普通类型1,[普通题1，普通题2]}，{复合类型1,[复合小题1，复合小题2]}]
			 */
			questionNavList: [],
			/**
			 * 当前展示的试题列表
			 * 结构示例 [试题1,试题2,试题3]
			 */
			questionShowList: [],
			// 分页信息
			page: {
				pageIndex: 1,
				pageSize: 10,
				pageCount: 0
			},
			// 当前题目所属的科目id
			subjectId: "",
			// 当前题目所属的科目名称
			subjectName: "",
			// 当前题目所属的项目名称
			projectName: "",
			// 标签下拉二维数组对象列表
			tagOptions: [],
		};
	},
	computed: {
		/**
		 * 根据当前分页大小下进行拆分的扁平化的二维数组列表
		 * 结构示例 [[第一页的试题列表],[第二页的试题列表]]
		 */
		pageArrQuestionAllList() {
			let size = this.page.pageSize;
			let arr1 = []; // 最终需要的二维数组
			let arr2 = []; // 作为承载的临时数组
			this.flatQuestionAllList.forEach((item, index) => {
				arr2.push(item);
				if ((index + 1) % size === 0) {
					// 该题目是当前分页的最后一题
					arr1.push(arr2);
					arr2 = [];
				}
			});
            // 如果临时数组有内容，表示存储的是不足一页的剩下的数据
			if (arr2.length) {
				arr1.push(arr2);
			}
			return arr1;
		},
		// 获取某个题目类型在所有题目列表中的中文序号
		getQuestionTypeSeq() {
			return (questionType) => {
				const seq = this.questionAllList.findIndex((i) => i.questionType === questionType) + 1;
				return ChineseUtil.transformToChinese(seq);
			};
		},
		// 生成年份下拉数据
		yearOptions() {
			let date = new Date();
			let startYear = 2000;
			let nowYears = date.getFullYear();
			let endYear = nowYears + 1;
			let arrYear = [];
			for (let i = endYear; i >= startYear; i--) {
				arrYear.push({
					id: i + "",
					name: i + "年"
				});
			}
			return arrYear;
		}
	}
};
